Event loop
https://gyazo.com/d6bfced83636e531a138a7c918d4865a
サンプル付きでself-containedな記事なので最初にこれを読むとよいkadoyau.icon
Node.jsのイベントループはlibuvに基づきます。 イベントループには6つのフェーズが存在する
そのうち4つのフェーズでJSを実行するタイミングがある
それぞれのフェーズで実行するべきジョブを積むjob queueが存在しており(つまり4つのキューを持ち)、ループごとに順次実行される このキューはlibuvが提供する
キューがemptyになるかコールバックの上限に達したらイベントループは次のフェーズへ遷移します
それとは別に2つのキューが存在し、フェーズ終了ごとに空になるまで実行される
キュー
nextTickQueue
microTaskQueue
このキューはNode.jsが管理する
飲み込めなかったkadoyau.icon
https://gyazo.com/edca0b28d3de98f77da38d0f994beebd
利点と欠点
preemption